package GPSChallenge.vehiculo;

import Excepciones.NoConozcoAlObstaculoException;
import Excepciones.NoConozcoAlVehiculoException;
import Excepciones.NoConozcoLaBanderaException;
import Excepciones.NoConozcoLaSorpresaException;
import GPSChallenge.bandera.Bandera;
import GPSChallenge.obstaculo.ControlPolicial;
import GPSChallenge.obstaculo.Obstaculo;
import GPSChallenge.obstaculo.ObstaculoVacio;
import GPSChallenge.obstaculo.Piquete;
import GPSChallenge.obstaculo.Pozo;
import GPSChallenge.sorpresa.Sorpresa;

public interface Estado {

	public Estado obtenerNuevoEstado();
	
	public String toString();

	public void interceptarA(Pozo unPozo, Vehiculo vehiculo) throws NoConozcoAlObstaculoException, NoConozcoAlVehiculoException;

	public void interceptarA(Piquete unPiquete, Vehiculo vehiculo) throws NoConozcoAlObstaculoException, NoConozcoAlVehiculoException;

	public void interceptarA(ControlPolicial control, Vehiculo vehiculo) throws NoConozcoAlObstaculoException, NoConozcoAlVehiculoException;
	
	public void interceptarA(Bandera bandera, Vehiculo vehiculo) throws NoConozcoLaBanderaException, NoConozcoAlVehiculoException;
	
	public void interceptarA(Sorpresa unaSorpresa, Vehiculo vehiculo) throws NoConozcoLaSorpresaException, NoConozcoAlVehiculoException;

	public void interceptarA(ObstaculoVacio obsVacio, Vehiculo vehiculo) throws NoConozcoAlVehiculoException;
	
	public void interceptarA(Obstaculo unObstaculo, Vehiculo vehiculo) throws NoConozcoAlVehiculoException;

}
